home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / network / daemons / nfs / nfs-serv.2be / nfs-serv / nfs-server-2.2beta16 / README.HISTORIC < prev    next >
Encoding:
Text File  |  1993-04-11  |  9.8 KB  |  279 lines

  1.  
  2.  
  3.             The LINUX User-Space NFS Server
  4.  
  5.                   Version 1.5
  6.  
  7.             Mark Shand, <shand@cad.jmrc.eecs.unsw.oz>
  8.  
  9.                Donald J. Becker, <becker@super.org>
  10.  
  11.             Rick Sladkey, <jrs@world.std.com>
  12.  
  13.               Orest Zborowski, <obz@raster.Kodak.COM>
  14.  
  15.           Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  16.  
  17.  
  18. HISTORY:
  19.     =====================================================================
  20.     This package implements a simple user level NFS server based on the
  21.     sunrpc3.9 package that was posted to the net a few months ago.  The
  22.     current version only provides read access from the clients.  It has
  23.     been tested between a VAX11/780 running 4.3BSD (the server) and
  24.     several diskful SUN3/60 running SunOS 3.4 (the clients) and on a
  25.     diskless SUN3/50 running SunOS 3.2 remounting its own root at a
  26.     lower level of its file hierarchy.
  27.  
  28.     The server is implemented by two programs unfsd and unfsmntd.
  29.     Unfsmntd handles the mount protocol, and unfsd handles all sub-
  30.     sequent operations.
  31.  
  32.     Currently NFS is defined to use internet port 2049.  As a consequence
  33.     there can only be one implementation of NFS active on a given machine.
  34.     Thus a machine cannot make it filesystem available through this server
  35.     while concurrently running some alternate server implementation.
  36.  
  37.     Normally the server would be run by the super-user.  I had hoped to be
  38.     able to run the server as a normal user, and indeed the server contains
  39.     code to cope with paths containing directories that can be accessed but
  40.     not searched, however the sunrpc portmapper listens on port 111 so some
  41.     superuser cooperation is required to at least gain support for sunrpc
  42.     on sites running standard 4.3 BSD.
  43.  
  44.     Unlike SUN's NFS-servers, the file hierarchy exported by unfsd treats
  45.     mount points within an exports filesystem transparently; thus the
  46.     client sees the same file hierarchy as is seen from the server.
  47.  
  48.     COPYRIGHT
  49.     =========
  50.     These programs may be freely distributed provided they retain my
  51.     copyright notices.  They are provided as is, with no warranty
  52.     expressed or implied.
  53.  
  54.     INSTALLATION
  55.     ============
  56.  
  57.     1. If you have installed Van Jacobson's TCP/IP code be sure you have
  58.           installed the fix I posted to comp.bugs.4bsd (reproduced below).
  59.           Otherwise UDP packets larger than the maximum IP fragment size of
  60.           your net will mysteriously fail.
  61.  
  62.     2. Edit the first few lines of the Makefile to reflect local conditions.
  63.  
  64.     3. If your client and server machines have different uid/username
  65.           mappings you may wish to run ugidd on the client (see below).
  66.           Otherwise the server assumes  one-to-one correspondence between
  67.           uids and gids on the server.
  68.  
  69.     4. "make" and "make install".
  70.  
  71.     5. Create a /etc/unfsd_exports file to authorize clients of your
  72.        server, and set desired options (Note: options may also be set
  73.        with the command that starts the server see unfsd(8) and instal-
  74.        lation step 7).
  75.  
  76.     6. Run "unfsmntd" and "unfsd" and try to mount server file systems
  77.        from your authorized clients.
  78.  
  79.     7. Arrange for the server to be started at boot-time.  EG in the
  80.       /etc/rc.local file, add:
  81.  
  82.         if [ -f /etc/unfsmntd ]; then
  83.             /etc/unfsmntd
  84.         fi
  85.         if [ -f /etc/unfsd ]; then
  86.             /etc/unfsd
  87.         fi
  88.  
  89.     8. Edit client fstabs to mount from the new server at boot-time.
  90.  
  91.     UGIDD
  92.     =====
  93.  
  94.     If you have the same set of user group names on your client and server
  95.     machines but differing uids and gids you may wish to run the ugidd on
  96.     the clients and enable to server to map between local and remote ids
  97.     using this pprogram.  Ugidd is a simple rpc-based service that supplies
  98.     translations between names and uid/gids on the client.  To guard against
  99.     trojan horses the ugidd authenicates itself by signalling the unfsd on
  100.     a reserved internet port.
  101.  
  102.     To install ugidd on a client:
  103.  
  104.     1. "make ugidd" and copy ugidd to standard place like
  105.        /usr/etc/rpc.ugidd
  106.  
  107.     2. Either run it from /etc/rc.local with the command
  108.  
  109.         /usr/etc/rpc.ugidd -d
  110.  
  111.        or if using a version of inetd that supports sunrpc, invoke it
  112.        from inetd with the line
  113.  
  114.         rpc     udp     /usr/etc/rpc.ugidd      545580417 1
  115.  
  116.        in /etc/servers (SunOS 3.x) or /etc/inetd.conf (4.3 BSD).
  117.        (See ugidd(8)).
  118.  
  119.     3. Set the "map_daemon" option for this client in the servers
  120.        /etc/unfsd_exports file.  (See unfsd_exports(5)).
  121.  
  122.     Note: When ugidd fails to respond to a server, or the specified
  123.     name (or uid/gid) has no corresponding uid/gid (or name), the
  124.     server assumes a mapping to the unprivelegded user "nobody"
  125.     (uid: -2).
  126.  
  127.     TCP/IP FIX
  128.     ==========
  129.  
  130.     Here follows a fix to the Van Jacobson TCP/IP upgrade.
  131.  
  132.     Subject: bug in new tcp/ip code
  133.  
  134.     [ posted to comp.bugs.4bsd Thu Apr 21 16:36:04 1988 ]
  135.  
  136.     There is a bug in the upgrade of 4.3BSD networking code that was
  137.     recently posted to comp.bugs.4bsd.ucb-fixes.  When an IP packet is
  138.     too large for an interface and must therefore be fragmented, some of
  139.     the fields of the IP header in the first packet are not converted to
  140.     network byte-order.
  141.  
  142.     The fix is as follows:
  143.  
  144.     *** /sys/netinet/ip_output.c.orig    Tue Apr 12 15:52:46 1988
  145.     --- /sys/netinet/ip_output.c    Thu Apr 21 13:16:16 1988
  146.     ***************
  147.     *** 232,239 ****
  148.         * and updating header, then send each fragment (in order).
  149.            */
  150.           m_adj(m0, hlen + firstlen - ip->ip_len);
  151.     !     ip->ip_len = hlen + firstlen;
  152.     !     ip->ip_off |= IP_MF;
  153.           ip->ip_sum = 0;
  154.           ip->ip_sum = in_cksum(m0, hlen);
  155.       sendorfree:
  156. --- 232,239 ----
  157.            * and updating header, then send each fragment (in order).
  158.            */
  159.           m_adj(m0, hlen + firstlen - ip->ip_len);
  160.     !     ip->ip_len = htons((u_short)(hlen + firstlen));
  161.     !     ip->ip_off = htons((u_short)(ip->ip_off | IP_MF));
  162.           ip->ip_sum = 0;
  163.           ip->ip_sum = in_cksum(m0, hlen);
  164.       sendorfree:
  165.  
  166.     SECURITY ISSUES
  167.     ===============
  168.  
  169.     When I first started looking at standard SunOS 3.x NFS I was pretty
  170.     well appalled by the lack of security.  I later found that Security
  171.     could be improved considerably it was just that the defaults were
  172.     (in my opinion) wrong.  By default, unfsd insists that NFS requests
  173.     originate from a secure port from a known internet address.
  174.  
  175.     Unfsd presumes that the kernel of the client deals correctly with
  176.     access permission checks.  In my experience this seems to be true
  177.     of SunOS 3.x kernels for read accesses across NFS, but not for write
  178.     accesses.  It is for this reason that write accesses remain unimple-
  179.     mented in the current version of the server.
  180.  
  181.     ----------
  182.     Mark Shand
  183.     Joint Microelectronics Research Centre
  184.     School of Electrical Engineering
  185.     University of NSW
  186.     PO Box 1
  187.     Kensington
  188.     NSW 2033
  189.     AUSTRALIA
  190.     +61 2 697 4898
  191.  
  192.     shand@cad.jmrc.eecs.unsw.oz
  193.  
  194. HISTORY:
  195.     =====================================================================
  196.     This directory contains the Harris NFS server, developed by Don Becker
  197.     at the Advanced Technology Department, Harris Corporation.  He may be
  198.     reached at becker@trantor.harris-atd.com.
  199.     COMMENT: his current address is <becker@super.org>
  200.  
  201.     An early version of my NFS server is available by anonymous FTP on
  202.     trantor.harris-atd.com.  That version still uses some of Mark Shand's
  203.     NFS code and manual pages, but it has been tested.  My current version
  204.     uses only Harris-written code, but it hasn't been tested and needs work
  205.     on the manual pages.  Eventually I hope to put in additional
  206.     authentication mechanisms such as Kerberos.  If you send me mail
  207.     requesting it, I'll send you a letter whenever I release a new
  208.     version.
  209.  
  210.     This is a user-level (no kernel mods) NFS server, unlike Der Mouse's
  211.     server which does add system calls to improve performance.  This is
  212.     not an NFS client implementation, which would require changes to both
  213.     the kernel and system utilities.
  214.  
  215.     Oh, by the way, this is not an official Harris product.  It is
  216.     in the anonymous FTP directory in the hope that it will be useful
  217.     to others.  I would like to receive any bug reports or improvements,
  218.     but Harris Corporation can't offer any user support or warranty.  I
  219.     personally would be happy to help in any way I can.
  220.  
  221.     Written while I was:
  222.     Donald Becker            Advanced Technology Department
  223.     becker@trantor.harris-atd.com    Harris Corporation, Melbourne FL
  224.  
  225.     New address:
  226.     Donald Becker            Supercomputing Research Center
  227.     becker@super.org        17100 Science Dr.   Bowie MD.
  228.     (301) 805-7482
  229.  
  230.     
  231.     =====================================================================
  232.     This is an NFS server package for Linux.
  233.  
  234.     It is a combination of two packages:
  235.  
  236.     * unfsd - Mark Shand's user-space read-only NFS package, circa 1988
  237.     * hnfs  - Don Becker's extension of unfsd for read-write NFS, circa 1989
  238.  
  239.     I made quite a few changes and bug fixes and then merged the two.
  240.  
  241.     Requirements:
  242.  
  243.     * you must have the RPC library or libc-4.2 installed to compile it
  244.     * you must have the portmapper running before you start the daemons
  245.     * you must have a syslog daemon running to peruse debugging output
  246.  
  247.     Installation:
  248.  
  249.     * read the exports man page and set up /etc/exports
  250.     * start up the nfsd and mountd daemons in you rc/rc.local/rc.net
  251.       or whatever
  252.     * mount a filesystem from a system that supports NFS clients
  253.       (e.g. a Sun)
  254.  
  255.     *** IMPORTANT ***
  256.  
  257.     Make sure that you mount using the options rsize=1024,wsize=1024 or
  258.     their equivalents when mounting a Linux filesystem from a non-Linux
  259.     NFS client.  Lots of nasty things can happen if you don't do this.
  260.  
  261.     Rick Sladkey
  262.     jrs@world.std.com
  263.  
  264.     =====================================================================
  265.     This the 1.4 release of Rick Sladkey's NFS server package for the
  266.     LINUX operating system.  I cleaned up the sources (GCC now only
  267.     issues some warnings on the RPC files- cannot do anything about
  268.     that...).  I reorganized the modules "a bit", and simplified the
  269.     debug/log facility.  It can now be configured for either SYSLOG
  270.     (normal operation) or a log file (debug runs).
  271.  
  272.     I also fixed a bug in auth_init.c, which caused my network to
  273.     be left with RO-file systems only.  The function that read the
  274.     /etc/exports file acted weird when it encountered "empty" lines
  275.     (i.e. blank or comment lines).  It's OK now.
  276.  
  277.     Fred N. van Kempen, 02/14/93
  278.     <waltje@uwalt.nl.mugnet.org>
  279.